class tools {

	/**
	 * input延时请求
	 * @name debounce
	 * @param 
	 * */
	static debounce(func, delay) {
		let timer
		return function(...args) {
			if (timer) {
				clearTimeout(timer)
			}
			timer = setTimeout(() => {
				func.apply(this, args)
			}, delay)
		}
	}


	/**
	 * 数组对象去重
	 * @name uniqueFun
	 * @param {Arreay} arr , {String} type
	 * */
	static uniqueFun(arr, type) {
		const res = new Map();
		return arr.filter((a) => !res.has(a[type]) && res.set(a[type], 1));
	}

	/**
	 * 数组分页
	 * @name pagination
	 * @param {type} pageNo 
	 * */
	static pagination(pageNo, pageSize, array) {
		var offset = (pageNo - 1) * pageSize;
		return (offset + pageSize >= array.length) ? array.slice(offset, array.length) : array.slice(offset,
			offset +
			pageSize);
	}

	/**
	 * 时间戳转换成日期格式
	 * @name formatDate
	 * @param {string} date
	 * */
	static formatDate(value) {
		if (value == null) {
			return '';
		} else {
			let dates = new Date(value * 1000);
			let y = dates.getFullYear(); // 年
			let MM = dates.getMonth() + 1; // 月
			MM = MM < 10 ? ('0' + MM) : MM;
			let d = dates.getDate(); // 日
			d = d < 10 ? ('0' + d) : d;
			let h = dates.getHours(); // 时
			h = h < 10 ? ('0' + h) : h;
			let m = dates.getMinutes(); // 分
			m = m < 10 ? ('0' + m) : m;
			let s = dates.getSeconds(); // 秒
			s = s < 10 ? ('0' + s) : s;
			return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s;
		}

	}


	/**
	 * 跳转链接
	 * @name gooutside
	 * @param {Object} v 
	 * */
	static gooutside(v) {
		if (v.url == "") {
			return false;
		} else if (v.url.indexOf("http") >= 0) {
			// 浏览器打开
			plus.runtime.openURL(v.url)
		} else {
			// 应用内页面
			uni.navigateTo({
				url: v.url
			})
		}
	}

	/**
	 * 变量判空
	 * @name isNull 
	 * */
	static isNull(arg) {
		if (arg == null || arg == "undefined" || arg == "" || arg == "null" || arg == "NULL") {
			return true;
		}
		return false;
	}

	// 手机号脱敏（11位）
	static subLastPhone(str) {
		str = String(str);
		return str.substr(0, 3) + '****' + str.substr(7); //131****5555
	}

	// 身份证号码脱敏
	static subLastCard(idCard) {
		return idCard.replace(idCard.substr(4, 10), '******');
	}

	// toast提示
	static showToast(txt, icon) {
		uni.showToast({
			icon: icon || 'none',
			title: txt,
			// duration:10000
		});
	}

	// 复制
	static copy(data) {
		uni.setClipboardData({
			data: data,
			success: function() {
				uni.showToast({
					icon: 'none',
					title: '复制成功',
				});
			}
		});
	}

	// 跳转页面
	static goPage(url) {
		uni.navigateTo({
			url: url
		})
	}

	// 返回上级页面
	static goBack(num) {
		uni.navigateBack({
			delta: num || 1
		})
	}

	// 手机号格式正则检测
	static checkPhone(value) {
		if (!(/^1[3456789]\d{9}$/.test(value))) {
			return false;
		} else {
			return true;
		}
	}

	// 身份证正则检测
	static checkIDCard(value) {
		// 身份证号码为15位或者18位，15位时全为数字，18位前17位为数字，最后一位是校验位，可能为数字或字符X 
		var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
		if (reg.test(value) === false) {
			return false;
		} else {
			return true;
		}
	}

}

export default tools;
